home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-06-22 | 23.9 KB | 712 lines |
- 10 ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 20 ' %% * INTERNATIONAL BRIDGE CONTRACTORS * %%
- 30 ' %% TRS-80 Version: William Philip Case %%
- 40 ' %% IBM Version By: William D. Hileman %%
- 50 ' %% *************** 2262-3 Lucretia Ave. %%
- 60 ' %% * Greystone *** San Jose, CA 95122 %%
- 70 ' %% **** Software * (408) 971-8416 %%
- 80 ' %% *************** DECEMBER 10, 1984 %%
- 90 ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 100 ' Main Program
- 110 KEY OFF:LOCATE ,,,1,11
- 120 SD=VAL(LEFT$(TIME$,2))*1000+VAL(MID$(TIME$,4,2))*100+VAL(RIGHT$(TIME$,2))
- 130 RANDOMIZE SD
- 140 COLOR 7,0:SCREEN 0,0,0:LOCATE ,,0
- 150 GOSUB 1000 ' Initialize
- 160 GOSUB 2000 ' Put Up Title Screen
- 170 GOSUB 3000 ' Get Players
- 180 GOSUB 10000 ' Play Game
- 190 GOSUB 20000 ' Play Again?
- 200 IF AGAIN THEN 160
- 210 COLOR 7,0:CLS:KEY ON:LOCATE ,,1:END
- 220 '
- 1000 ' Subroutine - Initialize
- 1010 DIM NA$(4),C#(4),B$(6),BC!(4,6),BS(6),BM(6),BB(4,6),M(6),COLR$(15),TI(4)
- 1020 DIM CB(4),CR(4),RD#(4),M#(4),EP$(10),R$(4),OC!(6),T$(6),FC(4),SB$(6)
- 1030 TITLE$="<<INTERNATIONAL BRIDGE CONTRACTORS>>"
- 1040 CR$=CHR$(13):BS$=CHR$(29):LF$=CHR$(10):DL$=CHR$(8)
- 1050 U$="$$###,###,###.##":LK$="$$###,###.##"
- 1060 GR1$=CHR$(201):GR2$=CHR$(205):GR3$=CHR$(187):GR4$=CHR$(186)
- 1070 GR5$=CHR$(200):GR6$=CHR$(188):GR7$=CHR$(204):GR8$=CHR$(185)
- 1080 GR9$=CHR$(203):GR10$=CHR$(206):GR11$=CHR$(202)
- 1090 A$=STRING$(79,GR2$)
- 1100 RESTORE 1800
- 1110 FOR CNT=1 TO 6
- 1120 READ B$(CNT),T$(CNT),OC!(CNT),BS(CNT),BM(CNT),M(CNT)
- 1130 SB$(CNT)=B$(CNT)
- 1140 WHILE RIGHT$(SB$(CNT),1)=" "
- 1150 SB$(CNT)=LEFT$(SB$(CNT),LEN(SB$(CNT))-1)
- 1160 WEND
- 1170 NEXT CNT
- 1180 TRUE=-1:FALSE=(NOT TRUE)
- 1190 EP$(1)="$$#.##":EP$(2)=EP$(1):EP$(3)="$$##.##":EP$(4)="$$###.##"
- 1200 EP$(5)="$$#,###.##":EP$(6)="$$##,###.##":EP$(7)="$$###,###.##"
- 1210 EP$(8)="$$#,###,###.##":EP$(9)="$$##,###,###.##":EP$(10)=U$
- 1220 CC#=1E+06:CI=5:RC#=5E+06:MC#=2E+06
- 1230 RESTORE 1900
- 1240 FOR CNT=1 TO 15
- 1250 READ COLR$(CNT)
- 1260 NEXT CNT
- 1270 GOTO 1990
- 1800 ' Bridge DATA
- 1810 ' Bridge Traffic Cost Safe Max. MT
- 1820 DATA "Pontoon ","Light ", 75000,3000,5000, 5
- 1830 DATA "Single Beam","Light-Med",210000,1000,1500, 8
- 1840 DATA "Truss ","Medium ",300000,1000,2000,15
- 1850 DATA "Arch ","Medium ",345000,1200,2200,25
- 1860 DATA "Cantilever ","Heavy ",525000,2500,3500,34
- 1870 DATA "Suspension ","Heavy ",998000,3000,6000,50
- 1900 ' Text (foreground Colors
- 1910 DATA Blue,Green,Cyan,Red
- 1920 DATA Magenta,Brown,White,Gray
- 1930 DATA Lt. Blue,Lt. Green,Lt. Cyan,Lt. Red
- 1940 DATA Lt. Magenta,Yellow,Lt. White
- 1990 RETURN
- 2000 ' Subroutine - Put Up Title Screen
- 2010 COLOR 7,0:CLS
- 2020 TXT$=GR1$+STRING$(27,GR2$)+GR3$:GOSUB 40100:PRINT
- 2030 TXT$=GR4$+" I N T E R N A T I O N A L "+GR4$:GOSUB 40100:PRINT
- 2040 TXT$=GR5$+STRING$(6,GR2$)+GR9$+STRING$(13,GR2$)
- 2050 TXT$=TXT$+GR9$+STRING$(6,GR2$)+GR6$:GOSUB 40100:PRINT
- 2060 TXT$=GR4$+" B R I D G E "+GR4$:GOSUB 40100:PRINT
- 2070 TXT$=GR1$+STRING$(4,GR2$)+GR11$+STRING$(13,GR2$)
- 2080 TXT$=TXT$+GR11$+STRING$(4,GR2$)+GR3$:GOSUB 40100:PRINT
- 2090 TXT$=GR4$+" C O N T R A C T O R S "+GR4$:GOSUB 40100:PRINT
- 2100 TXT$=GR5$+STRING$(23,GR2$)+GR6$:GOSUB 40100:PRINT LF$
- 2110 TXT$="1984 Greystone Software":GOSUB 40100:PRINT
- 2120 RESTORE 2240
- 2130 FOR CNT=1 TO 11
- 2140 READ TX1$,TX2$
- 2150 TXT$=TX1$+TX2$
- 2160 PRINT TXT$
- 2170 NEXT CNT
- 2180 LOCATE 21,1:PRINT A$
- 2190 TXT$="PRESS <RETURN>":GOSUB 40100:PRINT:PRINT A$
- 2200 WHILE INKEY$<>"":WEND
- 2210 X$=INPUT$(1)
- 2220 IF X$<>CR$ THEN 2200
- 2230 GOTO 2990
- 2240 ' Title Screen Data
- 2250 DATA " _ _ "
- 2260 DATA " _ _ "
- 2270 DATA " /|\=========+=========/|\========="
- 2280 DATA "+=========/|\=========+=========/|\ "
- 2290 DATA " / | \ | / | \ "
- 2300 DATA "| / | \ | / | \ "
- 2310 DATA " / | \ | / | \ "
- 2320 DATA "| / | \ | / | \ "
- 2330 DATA " /---|---\------+------/---|---\------"
- 2340 DATA "+------/---|---\------+------/---|---\ "
- 2350 DATA " /____|____\_____|_____/____|____\_____"
- 2360 DATA "|_____/____|____\_____|_____/____|____\"
- 2370 DATA " ```````````\ |=| "
- 2380 DATA " |=| /'''''''''''"
- 2390 DATA " ````````````\ |=| "
- 2400 DATA " |=| /''''''''''''"
- 2410 DATA " `````````````\ |=| "
- 2420 DATA " |=| /'''''''''''''"
- 2430 DATA " ``````````````\~~^^~~~~^^^^~~~~~^~~~^^"
- 2440 DATA "^~~~~~~^^^^^^~~^~~~~~~^~/''''''''''''''"
- 2450 DATA " ``````````````/ ^^^^ ^^ ^^^^ "
- 2460 DATA " ^^ ^^ ^^^ ^^^ ^^ \''''''''''''''"
- 2990 RETURN
- 3000 ' Subroutine - Get Players
- 3010 CLS:PRINT
- 3020 TXT$=TITLE$:GOSUB 40100
- 3030 PRINT LF$
- 3040 PRINT "Please enter the number of players (1-4) < >";BS$;BS$;
- 3050 LIN=CSRLIN:COL=POS(0)
- 3060 FLD.LEN=1:BK$="1"
- 3070 LOCATE LIN,COL:PRINT BK$;BS$;
- 3080 BEEP:GOSUB 40200:X$=BLD$
- 3090 IF X$="" THEN X$=BK$
- 3100 IF X$<"1" OR X$>"4" THEN BEEP:GOTO 3070
- 3110 PRINT LF$:P=VAL(X$)
- 3120 FOR Z=1 TO P
- 3130 PRINT "Player #";USING "#";Z;
- 3140 PRINT ", please enter your name: ";
- 3150 LIN=CSRLIN:COL=POS(0)
- 3160 PRINT STRING$(30,95):LOCATE LIN,COL
- 3170 FLD.LEN=30:BK$=CHR$(95):GOSUB 40200
- 3180 NA$(Z)=BLD$
- 3190 PRINT SPACE$(30-LEN(NA$(Z)))
- 3200 IF NA$(Z)<>"" THEN 3240
- 3210 IF Z=1 THEN BEEP:LOCATE LIN,COL:GOTO 3160
- 3220 Z=P:P=P-1:GOTO 3310
- 3230 ' Initialize Variables
- 3240 C#(Z)=4E+07:R$(Z)="Office Manager"
- 3250 TI(Z)=0:RD#(Z)=0:CR(Z)=0:M#(Z)=0:CB(Z)=0
- 3260 FOR CNT=1 TO 6
- 3270 BC!(Z,CNT)=OC!(CNT)
- 3280 BB(Z,CNT)=0
- 3290 NEXT CNT
- 3300 NEXT Z:PRINT
- 3310 PRINT "The following text (foreground) colors are available:";LF$
- 3320 FOR CNT1=0 TO 3
- 3330 FOR CNT2=1 TO 4
- 3340 PRINT TAB((CNT2-1)*20+5);
- 3350 COLR=CNT1*4+CNT2
- 3360 IF COLR=16 THEN 3380
- 3370 COLOR COLR,0:PRINT RIGHT$(STR$(COLR),2);"=";COLR$(COLR);
- 3380 NEXT CNT2:PRINT
- 3390 NEXT CNT1:PRINT:COLOR 7,0
- 3400 FOR Z=1 TO P
- 3410 PRINT "Player #";MID$(STR$(Z),2);", please enter your desired";
- 3420 PRINT " text color (1-15) ";
- 3430 LIN=CSRLIN:COL=POS(0)
- 3440 BK$=CHR$(95):FLD.LEN=2
- 3450 LOCATE LIN,COL:PRINT BK$;BK$;BS$;BS$;
- 3460 GOSUB 40200:COLR=VAL(BLD$)
- 3470 IF COLR<1 OR COLR>15 THEN BEEP:GOTO 3450
- 3480 FC(Z)=COLR:LOCATE LIN,COL
- 3490 PRINT USING "##";COLR;:PRINT " - ";:COLOR COLR,0
- 3500 PRINT COLR$(COLR):COLOR 7,0
- 3510 NEXT Z:PRINT
- 3520 TXT$="PRESS <RETURN> TO BEGIN":GOSUB 40100
- 3530 WHILE INKEY$<>"":WEND
- 3540 X$=INPUT$(1):IF X$<>CR$ THEN 3530
- 3990 RETURN
- 10000 ' Subroutine - Play Game
- 10010 OVER=FALSE
- 10020 FOR Z=1 TO P
- 10030 IF NA$(Z)="X" THEN 10140
- 10040 TI(Z)=TI(Z)+1
- 10050 COLOR FC(Z)
- 10060 GOSUB 11000 ' Screen 1 - Status
- 10070 GOSUB 12000 ' Screen 2 - Purchases
- 10080 GOSUB 13000 ' Screen 3 - News
- 10090 GOSUB 14000 ' Screen 4 - R & D Report
- 10100 GOSUB 15000 ' Screen 5 - Costs
- 10110 GOSUB 16000 ' Screen 6 - Bid
- 10120 GOSUB 17000 ' Promotions/Win/Lose
- 10130 IF (OVER) THEN 10990
- 10140 NEXT Z
- 10150 GOTO 10020
- 10990 RETURN
- 11000 ' Subroutine - Screen 1 - Status
- 11010 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 11020 PRINT A$:PRINT " NAME: ";NA$(Z);TAB(69-LEN(R$(Z)));
- 11030 PRINT "POSITION: ";R$(Z):PRINT A$
- 11040 PRINT " COMPANY STATUS DISPLAY";TAB(69);"TURN: ";
- 11050 PRINT USING "####";TI(Z):PRINT A$;LF$
- 11060 PRINT TAB(12);"BRIDGE CONSTRUCTION STATUS"
- 11070 PRINT TAB(12);GR1$;STRING$(13,GR2$);GR9$;STRING$(10,GR2$);GR3$
- 11080 PRINT TAB(12);GR4$;" BRIDGE TYPE ";GR4$;" COMPLETE ";GR4$
- 11090 PRINT TAB(12);GR7$;STRING$(13,GR2$);GR10$;STRING$(10,GR2$);GR8$
- 11100 FOR CNT=1 TO 6
- 11110 PRINT TAB(12);GR4$;" ";B$(CNT);" ";GR4$;" ";
- 11120 PRINT USING "###";BB(Z,CNT);:PRINT " ";GR4$
- 11130 NEXT CNT
- 11140 PRINT TAB(12);GR5$;STRING$(13,GR2$);GR11$;STRING$(10,GR2$);GR6$
- 11150 FOR LIN=8 TO 20
- 11160 LOCATE LIN,50:PRINT GR4$
- 11170 NEXT LIN:PRINT A$;LF$:PRINT A$
- 11180 LOCATE 7,50:PRINT GR9$
- 11190 LOCATE 9,50:PRINT GR7$;STRING$(29,GR2$)
- 11200 LOCATE 21,50:PRINT GR11$
- 11210 LOCATE 8,55:PRINT "COMPANY ASSETS STATUS"
- 11220 LOCATE 11,52:PRINT "NUMBER OF WORK CREWS = ";USING "####";CR(Z)
- 11230 LOCATE 13,52:PRINT "TOTAL R&D =";USING U$;RD#(Z)
- 11240 LOCATE 15,52:PRINT "MATERIALS =";USING U$;M#(Z)
- 11250 LOCATE 17,52:PRINT "CASH RES. =";USING U$;C#(Z)
- 11260 LOCATE 22,1:TXT$="PRESS <RETURN>":GOSUB 40100
- 11270 WHILE INKEY$<>"":WEND
- 11280 X$=INPUT$(1):IF X$<>CR$ THEN 11270
- 11990 RETURN
- 12000 ' Subroutine - Screen 2 - Purchases
- 12010 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 12020 PRINT A$:PRINT " NAME: ";NA$(Z);TAB(69-LEN(R$(Z)));
- 12030 PRINT "POSITION: ";R$(Z):PRINT A$
- 12040 PRINT " COMPANY PURCHASES DISPLAY";TAB(69);"TURN: ";
- 12050 PRINT USING "####";TI(Z):PRINT A$;LF$
- 12060 PRINT TAB(14);"1 - Hiring of";CI;"additional work crews:";
- 12070 PRINT TAB(55);USING U$;CC#
- 12080 PRINT TAB(14);"2 - Research & development investment:";
- 12090 PRINT TAB(55);USING U$;RC#
- 12100 PRINT TAB(14);"3 - Purchase of construction materials:";
- 12110 PRINT TAB(55);USING U$;MC#
- 12120 PRINT TAB(14);"4 - End purchases";LF$
- 12130 PRINT A$
- 12140 TXT$=GR1$+STRING$(29,GR2$)+GR3$:GOSUB 40100:PRINT
- 12150 TXT$=GR4$+" NUMBER OF WORK CREWS = "+GR4$:GOSUB 40100
- 12160 PRINT STRING$(6,BS$);:L1X=CSRLIN:L1Y=POS(0)
- 12170 PRINT USING "####";CR(Z)
- 12180 TXT$=GR4$+" TOTAL R&D ="+SPACE$(LEN(U$)+1)+GR4$:GOSUB 40100
- 12190 PRINT STRING$(LEN(U$)+2,BS$);:L2X=CSRLIN:L2Y=POS(0)
- 12200 PRINT USING U$;RD#(Z)
- 12210 TXT$=GR4$+" MATERIALS ="+SPACE$(LEN(U$)+1)+GR4$:GOSUB 40100
- 12220 PRINT STRING$(LEN(U$)+2,BS$);:L3X=CSRLIN:L3Y=POS(0)
- 12230 PRINT USING U$;M#(Z)
- 12240 TXT$=GR4$+" CASH RES. ="+SPACE$(LEN(U$)+1)+GR4$:GOSUB 40100
- 12250 PRINT STRING$(LEN(U$)+2,BS$);:L4X=CSRLIN:L4Y=POS(0)
- 12260 PRINT USING U$;C#(Z)
- 12270 TXT$=GR5$+STRING$(29,GR2$)+GR6$:GOSUB 40100:PRINT:PRINT A$
- 12280 TXT$="ENTER SELECTION (1-4): <4>":GOSUB 40100:PRINT BS$;BS$;
- 12290 LIN=CSRLIN:COL=POS(0):DFLT$="4":PRINT:PRINT A$
- 12300 LOCATE LIN,COL
- 12310 WHILE INKEY$<>"":WEND
- 12320 FLD.LEN=1:BK$=DFLT$:GOSUB 40200
- 12330 OP$=BLD$:IF OP$="" THEN OP$=DFLT$
- 12340 IF OP$>"0" AND OP$<"5" THEN 12360
- 12350 BEEP:LOCATE LIN,COL:PRINT DFLT$:GOTO 12300
- 12360 DFLT$=OP$
- 12370 ON VAL(OP$) GOTO 12380,12400,12420,12460
- 12380 CR(Z)=CR(Z)+CI:C#(Z)=C#(Z)-CC#
- 12390 LOCATE L1X,L1Y:PRINT USING "####";CR(Z):GOTO 12440
- 12400 RD#(Z)=RD#(Z)+RC#:C#(Z)=C#(Z)-RC#
- 12410 LOCATE L2X,L2Y:PRINT USING U$;RD#(Z):GOTO 12440
- 12420 M#(Z)=M#(Z)+MC#:C#(Z)=C#(Z)-MC#
- 12430 LOCATE L3X,L3Y:PRINT USING U$;M#(Z)
- 12440 LOCATE L4X,L4Y:PRINT USING U$;C#(Z)
- 12450 GOTO 12300
- 12460 '
- 12990 RETURN
- 13000 ' Subroutine - Screen 3 - News
- 13010 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 13020 PRINT A$:PRINT " NAME: ";NA$(Z);TAB(69-LEN(R$(Z)));
- 13030 PRINT "POSITION: ";R$(Z):PRINT A$
- 13040 PRINT " SECRETARY'S REPORT";TAB(69);"TURN: ";
- 13050 PRINT USING "####";TI(Z):PRINT A$;LF$
- 13060 RESTORE 30000
- 13070 READ MSGS:X=INT(RND(1)*(MSGS+10))+1
- 13080 IF X<=MSGS THEN 13110
- 13090 TXT$="Nothing of importance is in the news."
- 13100 GOSUB 40100:PRINT LF$;LF$:GOTO 13320
- 13110 FOR K=1 TO X:READ E1$,E2$,AF,MP#:NEXT
- 13120 IF ABS(MP#)=MP# OR AF=4 THEN 13190
- 13130 ON AF GOTO 13140,13160,13180
- 13140 IF CR(Z)=0 THEN 13060
- 13150 GOTO 13190
- 13160 IF RD#(Z)=0 THEN 13060
- 13170 GOTO 13190
- 13180 IF M#(Z)=0 THEN 13060
- 13190 TXT$=E1$:GOSUB 40100:PRINT:TXT$=E2$:GOSUB 40100:PRINT LF$
- 13200 IF ABS(MP#)<>MP# THEN BEEP
- 13210 ON AF GOTO 13220,13250,13280,13310
- 13220 CR(Z)=CR(Z)+MP#
- 13230 IF CR(Z)<0 THEN CR(Z)=0
- 13240 GOTO 13320
- 13250 RD#(Z)=RD#(Z)+MP#
- 13260 IF RD#(Z)<0 THEN RD#(Z)=0
- 13270 GOTO 13320
- 13280 M#(Z)=M#(Z)+MP#
- 13290 IF M#(Z)<0 THEN M#(Z)=0
- 13300 GOTO 13320
- 13310 C#(Z)=C#(Z)+MP#
- 13320 PRINT A$;LF$
- 13330 TXT$=GR1$+STRING$(29,GR2$)+GR3$:GOSUB 40100:PRINT
- 13340 TXT$=GR4$+" NUMBER OF WORK CREWS = "+GR4$:GOSUB 40100
- 13350 PRINT STRING$(6,BS$);USING "####";CR(Z)
- 13360 TXT$=GR4$+" TOTAL R&D ="+SPACE$(LEN(U$)+1)+GR4$:GOSUB 40100
- 13370 PRINT STRING$(LEN(U$)+2,BS$);USING U$;RD#(Z)
- 13380 TXT$=GR4$+" MATERIALS ="+SPACE$(LEN(U$)+1)+GR4$:GOSUB 40100
- 13390 PRINT STRING$(LEN(U$)+2,BS$);USING U$;M#(Z)
- 13400 TXT$=GR4$+" CASH RES. ="+SPACE$(LEN(U$)+1)+GR4$:GOSUB 40100
- 13410 PRINT STRING$(LEN(U$)+2,BS$);USING U$;C#(Z)
- 13420 TXT$=GR5$+STRING$(29,GR2$)+GR6$:GOSUB 40100
- 13430 PRINT LF$:PRINT A$
- 13440 TXT$="PRESS <RETURN>":GOSUB 40100:PRINT:PRINT A$
- 13450 WHILE INKEY$<>"":WEND
- 13460 X$=INPUT$(1):'IF X$<>CR$ THEN 13320
- 13470 IF X$<>CR$ THEN 13450
- 13990 RETURN
- 14000 ' Subroutine - Screen 4 - R & D Report
- 14010 IF RD#(Z)=0 THEN 14990
- 14020 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 14030 PRINT A$:PRINT " NAME: ";NA$(Z);TAB(69-LEN(R$(Z)));
- 14040 PRINT "POSITION: ";R$(Z):PRINT A$
- 14050 PRINT " RESEARCH & DEVELOPMENT STATUS";TAB(69);"TURN: ";
- 14060 PRINT USING "####";TI(Z):PRINT A$;LF$
- 14070 X=INT(RND(1)*30)+1:X#=X*1E+06
- 14080 IF RD#(Z)>X# THEN 14120
- 14090 TXT$="Research & Development reports no progress this turn."
- 14100 GOSUB 40100:PRINT LF$:PRINT A$
- 14110 GOTO 14340
- 14120 X=INT(RND(1)*6)+1
- 14130 TXT$="Research & Development reports a breakthrough:"
- 14140 GOSUB 40100:BEEP:PRINT LF$
- 14150 TXT$="The cost of a":IF X=4 THEN TXT$=TXT$+"n"
- 14160 TXT$=TXT$+" "+SB$(X)+" bridge has gone from":GOSUB 40100:PRINT LF$
- 14170 FC!=BC!(Z,X):BC!(Z,X)=BC!(Z,X)*0.75
- 14180 EPL1=LEN(STR$(INT(FC!)))
- 14190 CNT=LEN(EP$(EPL1))+3
- 14200 EPL2=LEN(STR$(INT(BC!(Z,X))))
- 14210 CNT=CNT+LEN(EP$(EPL2))+14
- 14220 TB=(80-CNT)/2+1:PRINT TAB(TB);
- 14230 PRINT USING EP$(EPL1);FC!;
- 14240 PRINT " to";
- 14250 PRINT USING EP$(EPL2);BC!(Z,X);
- 14260 PRINT " per 100 feet."
- 14270 PRINT LF$;A$;LF$
- 14280 TXT$="Research & Development costs run"
- 14290 EPL=LEN(STR$(INT(X#/2)))
- 14300 CNT=LEN(TXT$)+LEN(EP$(EPL))+1
- 14310 TB=(80-CNT)/2+1:PRINT TAB(TB);TXT$;
- 14320 PRINT USING EP$(EPL);X#/2;:PRINT "."
- 14330 RD#(Z)=RD#(Z)-X#/2
- 14340 LOCATE 21,1:PRINT A$
- 14350 TXT$="PRESS <RETURN>":GOSUB 40100:PRINT:PRINT A$
- 14360 WHILE INKEY$<>"":WEND
- 14370 X$=INPUT$(1)
- 14380 IF X$<>CR$ THEN 14360
- 14990 RETURN
- 15000 ' Subroutine - Screen 5 - Costs
- 15010 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 15020 PRINT A$:PRINT " NAME: ";NA$(Z);TAB(69-LEN(R$(Z)));
- 15030 PRINT "POSITION: ";R$(Z):PRINT A$
- 15040 PRINT " BRIDGE SPECIFICATIONS DISPLAY";TAB(69);"TURN: ";
- 15050 PRINT USING "####";TI(Z):PRINT A$
- 15060 PRINT TAB(7);GR1$;STRING$(13,GR2$);GR9$;STRING$(11,GR2$);GR9$;
- 15070 PRINT STRING$(13,GR2$);GR9$;STRING$(12,GR2$);GR9$;STRING$(12,GR2$);GR3$
- 15080 PRINT TAB(7);GR4$;" BRIDGE TYPE ";GR4$;" TRAFFIC ";GR4$;
- 15090 PRINT " COST/100 FT ";GR4$;" SAFE DIST. ";GR4$;" MAX. DIST. ";GR4$
- 15100 PRINT TAB(7);GR7$;STRING$(13,GR2$);GR10$;STRING$(11,GR2$);GR10$;
- 15110 PRINT STRING$(13,GR2$);GR10$;STRING$(12,GR2$);GR10$;STRING$(12,GR2$);GR8$
- 15120 FOR CNT=1 TO 6
- 15130 PRINT TAB(7);GR4$;" ";B$(CNT);" ";GR4$;" ";T$(CNT);" ";
- 15140 PRINT GR4$;USING LK$;BC!(Z,CNT);:PRINT " ";GR4$;" ";BS(CNT);
- 15150 PRINT " ";GR4$;" ";BM(CNT);" ";GR4$
- 15160 NEXT CNT
- 15170 PRINT TAB(7);GR5$;STRING$(13,GR2$);GR11$;STRING$(11,GR2$);GR11$;
- 15180 PRINT STRING$(13,GR2$);GR11$;STRING$(12,GR2$);GR11$;STRING$(12,GR2$);GR6$
- 15190 PRINT A$
- 15200 PRINT TAB(7);"NUMBER OF WORK CREWS = ";USING "####";CR(Z);
- 15210 PRINT TAB(47);"TOTAL R&D =";USING U$;RD#(Z)
- 15220 PRINT TAB(7);"MATERIALS =";USING U$;M#(Z);
- 15230 PRINT TAB(47);"CASH RES. =";USING U$;C#(Z)
- 15240 PRINT A$:TXT$="PRESS <RETURN>":GOSUB 40100:PRINT:PRINT A$
- 15250 WHILE INKEY$<>"":WEND
- 15260 X$=INPUT$(1):IF X$<>CR$ THEN 15250
- 15990 RETURN
- 16000 ' Subroutine - Screen 6 - Bid
- 16010 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 16020 PRINT A$:PRINT " NAME: ";NA$(Z);TAB(69-LEN(R$(Z)));
- 16030 PRINT "POSITION: ";R$(Z):PRINT A$
- 16040 PRINT " CONTRACT BIDDING PHASE";TAB(69);"TURN: ";
- 16050 PRINT USING "####";TI(Z):PRINT A$;LF$
- 16060 TXT$="A client you are dealing with needs a bridge with these specs:"
- 16070 GOSUB 40100:PRINT LF$
- 16080 C=INT(RND(1)*6)+1
- 16090 Y=INT(RND(1)*BM(C))+1
- 16100 TXT$="TYPE = "+B$(C)+" LENGTH ="+STR$(Y)+" FT."
- 16110 GOSUB 40100:PRINT LF$
- 16120 CST#=Y*BC!(Z,C)/100:EPL=LEN(STR$(INT(CST#)))
- 16130 TXT$="Your cost for building this bridge is"
- 16140 TB=(80-LEN(TXT$)-LEN(EP$(EPL))-1)/2+1
- 16150 PRINT TAB(TB);TXT$;USING EP$(EPL);CST#;
- 16160 PRINT ".";LF$:PRINT A$;LF$
- 16170 IF CR(Z)>=Y/100*C THEN 16200
- 16180 TXT$="You do not have enough WORK CREWS to bid on this bridge."
- 16190 GOTO 16220
- 16200 IF M#(Z)>=(Y/100)*(M(C)*10000) THEN 16230
- 16210 TXT$="You do not have enough MATERIALS to bid on this bridge."
- 16220 GOSUB 40100:BEEP:GOTO 16440
- 16230 TXT$="Please enter your bid on this bridge:"+SPACE$(13)
- 16240 GOSUB 40100:PRINT STRING$(12,BS$);
- 16250 LIN=CSRLIN:COL=POS(0):PRINT
- 16260 LOCATE LIN,COL:PRINT STRING$(12,95)
- 16270 LOCATE LIN,COL:BEEP
- 16280 FLD.LEN=12:BK$=CHR$(95):GOSUB 40200
- 16290 BO#=VAL(BLD$):IF BO#<CST# OR BO#>=1E+09 THEN 16260
- 16300 BID$=BLD$:EPL=LEN(STR$(INT(VAL(BID$))))
- 16310 LOCATE LIN,COL:PRINT SPACE$(12)
- 16320 LOCATE LIN,COL-1
- 16330 PRINT USING EP$(EPL);BO#:PRINT
- 16340 IF BO#<=(INT(RND(1)*11)+1)*((OC!(C)*Y/100)*0.9) THEN 16370
- 16350 TXT$="Your price was too high, the client takes his business elsewhere."
- 16360 GOSUB 40100:GOTO 16440
- 16370 PFT#=BO#-CST#:EPL=LEN(STR$(INT(PFT#)))
- 16380 TXT$="You get the contract and make"
- 16390 TB=(80-LEN(TXT$)-LEN(EP$(EPL))-1)/2+1
- 16400 PRINT TAB(TB);TXT$;USING EP$(EPL);PFT#;:PRINT "."
- 16410 BEEP:C#(Z)=C#(Z)+PFT#:M#(Z)=M#(Z)-(Y/100)*(M(C)*10000)
- 16420 IF M#(Z)<0 THEN M#(Z)=0
- 16430 BB(Z,C)=BB(Z,C)+1
- 16440 LOCATE 21,1:PRINT A$
- 16450 TXT$="PRESS <RETURN>":GOSUB 40100:PRINT:PRINT A$
- 16460 WHILE INKEY$<>"":WEND
- 16470 X$=INPUT$(1):IF X$<>CR$ THEN 16470
- 16990 RETURN
- 17000 ' Subroutine - Promotions/Win/Lose
- 17010 IF C#(Z)>=0 THEN 17170
- 17020 X=INT(RND(1)*300)+1
- 17030 IF C#(Z)>=X*1E+06*-1 THEN 17170
- 17040 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 17050 PRINT A$;LF$
- 17060 TXT$="Unfortunate news!!!":GOSUB 40100:PRINT LF$:BEEP
- 17070 TXT$=NA$(Z)+" has gone bankrupt and is out of the game."
- 17080 GOSUB 40100:PRINT LF$
- 17090 PRINT A$;LF$
- 17100 NA$(Z)="X":OVER=TRUE
- 17110 FOR A=1 TO P:IF NA$(A)<>"X" THEN OVER=FALSE:NEXT A
- 17120 IF OVER THEN 17150
- 17130 TXT$="<< Game Continues >>"
- 17140 GOTO 17410
- 17150 TXT$="<< Game Over >>"
- 17160 GOTO 17410
- 17170 IF NOT C#(Z)<0 THEN 17190
- 17180 C#(Z)=C#(Z)*1.25
- 17190 IF NOT (C#(Z)>5E+07 AND CB(Z)<5) THEN 17210
- 17200 R$(Z)="District Manager":CB(Z)=5:GOTO 17990
- 17210 IF NOT (C#(Z)>1E+08 AND CB(Z)<10 AND CB(Z)>4) THEN 17230
- 17220 R$(Z)="Regional Supervisor":CB(Z)=10:GOTO 17990
- 17230 IF NOT (C#(Z)>1.5E+08 AND CB(Z)<15 AND CB(Z)>9) THEN 17250
- 17240 R$(Z)="Corporate Advisor":CB(Z)=15:GOTO 17990
- 17250 IF NOT (C#(Z)>2E+08 AND CB(Z)<20 AND CB(Z)>14) THEN 17270
- 17260 R$(Z)="Company Representative":CB(Z)=20:GOTO 17990
- 17270 IF NOT (C#(Z)>3E+08 AND CB(Z)<30 AND CB(Z)>19) THEN 17290
- 17280 R$(Z)="V.P. of Production":CB(Z)=30:GOTO 17990
- 17290 IF NOT (C#(Z)>4E+08 AND CB(Z)<40 AND CB(Z)>29) THEN 17310
- 17300 R$(Z)="Company President":CB(Z)=40:GOTO 17990
- 17310 IF CB(Z)<>50 THEN 17390
- 17320 CLS:TXT$=TITLE$:GOSUB 40100:PRINT LF$
- 17330 PRINT A$;LF$
- 17340 TXT$="Important news!!!":GOSUB 40100:PRINT LF$:BEEP
- 17350 TXT$=NA$(Z)+" has been elected":GOSUB 40100:PRINT LF$
- 17360 TXT$="CHAIRMAN OF THE BOARD":GOSUB 40100:PRINT LF$
- 17370 PRINT A$;LF$:TXT$="<< Game Over >>":OVER=TRUE
- 17380 GOTO 17410
- 17390 IF NOT (C#(Z)>5E+08 AND CB(Z)=40) THEN 17990
- 17400 CB(Z)=50:GOTO 17990
- 17410 GOSUB 40100:PRINT:BEEP
- 17420 IF OVER THEN 17990
- 17430 LOCATE 21,1:PRINT A$:TXT$="PRESS <RETURN>"
- 17440 GOSUB 40100:PRINT:PRINT A$
- 17450 WHILE INKEY$<>"":WEND
- 17460 X$=INPUT$(1)
- 17470 IF X$<>CR$ THEN 17450
- 17990 RETURN
- 20000 ' Subroutine - Play Again?
- 20010 AGAIN=FALSE:FLD.LEN=1:BK$="Y"
- 20020 LOCATE 21,1:PRINT A$:TXT$="Play again? (Y/N) < >"
- 20030 GOSUB 40100:PRINT BS$;BS$;
- 20040 LIN=CSRLIN:COL=POS(0)
- 20050 PRINT:PRINT A$
- 20060 LOCATE LIN,COL:PRINT BK$;BS$;
- 20070 BEEP:GOSUB 40200:OP$=BLD$
- 20080 IF OP$="" THEN OP$=BK$
- 20090 OP$=CHR$(ASC(OP$) AND 223)
- 20100 IF OP$<>"Y" AND OP$<>"N" THEN 20060
- 20110 IF OP$="Y" THEN AGAIN=TRUE
- 20990 RETURN
- 30000 ' Secretary Reports Data E1$,E2$,AF,MP#
- 30010 DATA 66 :' Number of Messages
- 30020 DATA "Congress has just passed a highly restrictive tarrif"
- 30030 DATA "on steel which costs the company $5,000,000."
- 30040 DATA 4,-5000000
- 30050 DATA "Company losses total $4,000,000 because of late delivery"
- 30060 DATA "of construction materials from a third world country."
- 30070 DATA 4,-4000000
- 30080 DATA "A suspension bridge built by the company five years ago collapses"
- 30090 DATA "due to faulty engineering, with lawsuits totaling $10,000,000."
- 30100 DATA 4,-10000000
- 30110 DATA "Cost overruns cost the company $3,500,000 because of late delivery"
- 30120 DATA "of construction materials to job site by 'El Cheapo' trucker."
- 30130 DATA 4,-3500000
- 30140 DATA "Company is prosecuted by the justice department for illegal"
- 30150 DATA "payoffs to overseas suppliers. Fines total $6,500,000."
- 30160 DATA 4,-6500000
- 30170 DATA "Pregnant former secretary seeks $10,000,000 for 'illegal"
- 30180 DATA "entry'. Company settles out of court for $500,000."
- 30190 DATA 4,-500000
- 30200 DATA "Chartered vessel carrying $5,000,000 in structural steel forms"
- 30210 DATA "sinks in mid-ocean. Underwriters will not honor claim."
- 30220 DATA 4,-5000000
- 30230 DATA "U.S. Customs fines company $10,000,000 for fraudulent"
- 30240 DATA "invoicing on import shipments during the past five years."
- 30250 DATA 4,-10000000
- 30260 DATA "Congress has just passed a tarrif"
- 30270 DATA "which costs the company $1,000,000."
- 30280 DATA 4,-1000000
- 30290 DATA "An accounting error has just been discovered costing the"
- 30300 DATA "company $10,000. The responsible employee has been fired."
- 30310 DATA 4,-10000
- 30320 DATA "The Chairman of the Board has just ordered you to"
- 30330 DATA "spend $5,000 for a wildlife conservation project."
- 30340 DATA 4,-5000
- 30350 DATA "A former employee has collected $100,000"
- 30360 DATA "in an insurance claim against the company."
- 30370 DATA 4,-100000
- 30380 DATA "A worker slowdown has cost the company $3,000."
- 30390 DATA
- 30400 DATA 4,-3000
- 30410 DATA "The Health & Safety Department has condemned one of your"
- 30420 DATA "regional offices. It costs you $300,000 to rebuild."
- 30430 DATA 4,-300000
- 30440 DATA "New government regulations just adopted"
- 30450 DATA "regarding federal trade cost you $2,000."
- 30460 DATA 4,-2000
- 30470 DATA "Vandals hit your main office causing $500 in damage."
- 30480 DATA
- 30490 DATA 4,-500
- 30500 DATA "Worker carelessness costs the company $1,000. An"
- 30510 DATA "investigation for the person responsible is underway."
- 30520 DATA 4,-1000
- 30530 DATA "A labor strike causes $50,000 in lost production."
- 30540 DATA
- 30550 DATA 4,-50000
- 30560 DATA "A large production crane has been stolen."
- 30570 DATA "It costs $1,000,000 to replace."
- 30580 DATA 4,-1000000
- 30590 DATA "A communications breakdown costs the"
- 30600 DATA "company $7,000 in miscellaneous problems."
- 30610 DATA 4,-7000
- 30620 DATA "The present Chairman of the Board died."
- 30630 DATA "It costs $30,000 to replace him."
- 30640 DATA 4,-30000
- 30650 DATA "A regional office has burned to the ground. It costs"
- 30660 DATA "the company $300,000 in repairs and insurance hikes."
- 30670 DATA 4,-300000
- 30680 DATA "The government has changed its position on competition"
- 30690 DATA "in the industry. It should not affect our business."
- 30700 DATA 4,0
- 30710 DATA "A former client has given the company $20,000,000"
- 30720 DATA "because of its performance on the job."
- 30730 DATA 4,20000000
- 30740 DATA "A new labor contract actually saves the company $5,000,000."
- 30750 DATA
- 30760 DATA 4,5000000
- 30770 DATA "Company captures corporate spy and receives"
- 30780 DATA "$5,000,000 in rewards from appreciative companies."
- 30790 DATA 4,5000000
- 30800 DATA "Company makes equipment purchase on"
- 30810 DATA "foreign market and saves $20,000,000."
- 30820 DATA 4,20000000
- 30830 DATA "Company R & D department develops new communications"
- 30840 DATA "devise. Profits on the sales net the company $30,000,000."
- 30850 DATA 4,30000000
- 30860 DATA "Accounting department reports previous earnings understated."
- 30870 DATA "Company gains $3,000,000. Promotions and firings ensue."
- 30880 DATA 4,3000000
- 30890 DATA "Government lobby forces legislation through congress"
- 30900 DATA "which saves the company $10,000,000 in taxes."
- 30910 DATA 4,10000000
- 30920 DATA "New accounting system saves company $4,000,000."
- 30930 DATA "Several programmers given raises (yea!)."
- 30940 DATA 4,4000000
- 30950 DATA "Major competitor goes bankrupt."
- 30960 DATA "Company gains $50,000,000 in new revenues."
- 30970 DATA 4,50000000
- 30980 DATA "Company installs new computer system"
- 30990 DATA "and saves $5,000,000 in labor."
- 31000 DATA 4,5000000
- 31010 DATA "There has been some protest of the company's activities"
- 31020 DATA "in the Everglades. However, it should not affect business."
- 31030 DATA 4,0
- 31040 DATA "Government launches investigation into alleged underground"
- 31050 DATA "activities by company officials. It should not affect business."
- 31060 DATA 4,0
- 31070 DATA "Your secretary's daughter has just had"
- 31080 DATA "a baby. It should not affect business."
- 31090 DATA 4,0
- 31100 DATA "Your secretary feels poorly and wishes to go home."
- 31110 DATA
- 31120 DATA 4,0
- 31130 DATA "100 striking employees return to"
- 31140 DATA "work after a long, hungry absence."
- 31150 DATA 1,100
- 31160 DATA "50 of your employees die in a freak nuclear"
- 31170 DATA "accident while working near Three Mile Island."
- 31180 DATA 1,-50
- 31190 DATA "An anonymous source donates $10,000,000 in construction"
- 31200 DATA "materials. An investigation by local authorites is started."
- 31210 DATA 3,10000000
- 31220 DATA "Robbers make-off with $5,000,000 in construction"
- 31230 DATA "materials. Insurance premiums go sky-high."
- 31240 DATA 3,-5000000
- 31250 DATA "An earthquake creates a new fault line right at your materials"
- 31260 DATA "depot. $15,000,000 in construction materials are lost."
- 31270 DATA 3,-15000000
- 31280 DATA "R & D Department reports programmer embezzels $15,000,000."
- 31290 DATA "They say he was last seen boarding a plane for Rio."
- 31300 DATA 2,-15000000
- 31310 DATA "R & D Department reports inventing fool-proof counterfeit money"
- 31320 DATA "press. $22,000,000 is stashed-away before they are arrested."
- 31330 DATA 2,22000000
- 31340 DATA "75 employees die as 'Love Boat' sinks in the Bermuda Triangle."
- 31350 DATA
- 31360 DATA 1,-75
- 31370 DATA "Personell department smuggles in 75"
- 31380 DATA "'illegal aliens' from Silicon Valley."
- 31390 DATA 1,75
- 31400 DATA "100 of your employees disappear suddenly. Entire"
- 31410 DATA "city reports sighting of U.F.O.'s same night."
- 31420 DATA 1,-100
- 31430 DATA "R & D Department donates $10,000,000 to 'Moonies'"
- 31440 DATA "Massive firings ensue."
- 31450 DATA 2,-10000000
- 31460 DATA "R & D department creates new video game - 'Construction Worker'."
- 31470 DATA "Game gets 'X' rating. Profits of $20,000,000 are re-invested."
- 31480 DATA 2,20000000
- 31490 DATA "Construction materials fall victim of 'acid rain'."
- 31500 DATA "$7,000,000 worth of materials have to be scrapped."
- 31510 DATA 3,-7000000
- 31520 DATA "Company president dies - Company gains $100,000,000"
- 31530 DATA "as the sole beneficiary listed in the will!"
- 31540 DATA 4,100000000
- 31550 DATA "Truck falls 800 feet into bay as suspension bridge crumbles."
- 31560 DATA "Trucker survives and wins $15,000,000 in lawsuit battle."
- 31570 DATA 4,-15000000
- 31580 DATA "Corporate income taxes come due."
- 31590 DATA "Company pays $10,000,000."
- 31600 DATA 4,-10000000
- 31610 DATA "Company Christmas Club account matures. Company"
- 31620 DATA "collects $75,000,000 (but no gifts are bought!)."
- 31630 DATA 4,75000000
- 31640 DATA "Company pays $12,000,000 in dividends to stockholders."
- 31650 DATA
- 31660 DATA 4,-12000000
- 31670 DATA "Company receives $45,000,000 in capital from sale of stock."
- 31680 DATA
- 31690 DATA 4,45000000
- 31700 DATA "45 of your 50 cigarette smokers die suddenly of lung"
- 31710 DATA "cancer. The remaining five quit smoking immediately."
- 31720 DATA 1,-45
- 31730 DATA "Employees win strike. Raises and"
- 31740 DATA "benefits cost company $7,000,000."
- 31750 DATA 4,-7000000
- 31760 DATA "R & D department builds robot. Robot goes berzerk"
- 31770 DATA "and destroys entire R & D facility and half of city."
- 31780 DATA 2,-100000000
- 31790 DATA "Insurance company finally honors stolen materials"
- 31800 DATA "claim. Company gains $45,000,000 in new materials."
- 31810 DATA 3,45000000
- 31820 DATA "$13,000,000 in materials have to be disposed"
- 31830 DATA "of when they are found to be radio-active."
- 31840 DATA 3,-13000000
- 31850 DATA "65 employees go on strike."
- 31860 DATA "They demand IBM Computers instead of Apples!"
- 31870 DATA 1,-65
- 31880 DATA "Vandals try to siphon gas from crane using vaccuum-cleaner."
- 31890 DATA "Loss in crane and surrounding buildings runs $10,000,000."
- 31900 DATA 4,-10000000
- 31910 DATA "While digging on a site, employees discover complete"
- 31920 DATA "Wooly Mammoth skeleton. Museum pays company $78,000,000."
- 31930 DATA 4,78000000
- 31940 DATA "Philanthropist donates $100,000,000 to R & D department."
- 31950 DATA
- 31960 DATA 2,100000000
- 31970 DATA "Universal studios pays company $12,000,000 to shoot"
- 31980 DATA "'Bridge Over Troubled Water' on location during job."
- 31990 DATA 4,12000000
- 40000 ' Miscellaneous Subroutines
- 40100 ' Center TXT$ on Screen
- 40110 PRINT TAB((80-LEN(TXT$))/2+1);TXT$;
- 40120 RETURN
- 40200 ' Input Loop
- 40210 WHILE INKEY$<>"":WEND:BLD$=""
- 40220 LOCATE ,,1:IC$=INPUT$(1):LOCATE ,,0
- 40230 IF IC$=CR$ THEN 40340
- 40240 IF IC$<>DL$ THEN 40290
- 40250 IF BLD$="" THEN BEEP:GOTO 40220
- 40260 PRINT BS$;BK$;BS$;
- 40270 BLD$=LEFT$(BLD$,LEN(BLD$)-1)
- 40280 GOTO 40220
- 40290 IF IC$<" " OR IC$>"~" THEN BEEP:GOTO 40220
- 40300 IF LEN(BLD$)=FLD.LEN THEN BEEP:GOTO 40220
- 40310 PRINT IC$;
- 40320 BLD$=BLD$+IC$
- 40330 GOTO 40220
- 40340 RETURN
- 40990 ' *** END OF CODE ***
-